GDK W32: Handle drivers that do not send WT_CSRCHANGE after WT_PROXIMITY
authorРуслан Ижбулатов <lrn1986@gmail.com>
Fri, 10 Feb 2017 10:49:00 +0000 (10:49 +0000)
committerРуслан Ижбулатов <lrn1986@gmail.com>
Sat, 2 Dec 2017 10:38:26 +0000 (10:38 +0000)
commitd7e2017c289f69f52632661170e34786bbd08d7e
tree8eeb91c5923b5e37623ecb94cee06614b3e49686
parent3c9b667d3ed2b931df31da0351a09e871057a9ad
GDK W32: Handle drivers that do not send WT_CSRCHANGE after WT_PROXIMITY

Some drivers don't do that (not sure whether that is the correct behaviour
or not). Remember each WT_PROXIMITY with LOWORD(lParam) != 0 that we get,
then look for a WT_CSRCHANGE. If WT_CSRCHANGE doesn't come, but a WT_PACKET
does, assume that this device is the one that sent WT_PROXIMITY.

Also include fallback code to ensure that WT_PACKETs for an enabled device
disable the system pointer, because WT_PROXIMITY handler might have
enabled it by mistake, since it's not possible to know which device left
the proximity (it might have been a disabled device).

https://bugzilla.gnome.org/show_bug.cgi?id=778328
gdk/win32/gdkdevicemanager-win32.c
gdk/win32/gdkdevicemanager-win32.h
gdk/win32/gdkdisplay-win32.c
gdk/win32/gdkevents-win32.c
gdk/win32/gdkglobals-win32.c
gdk/win32/gdkprivate-win32.h